package com.zxx.pattern.mementoPattern.mementor1;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 备忘录管理类，其中存储所有曾经操作后的数据，单例
 *
 * @author zxx on 2021/3/16
 */
public class UserCaretaker {

    private static UserCaretaker instance; // 单例对象

    // 存储所有用户备忘录的集合，key是回滚点名称，value是备忘录对象
    private Map<String, List<HashMap<String, String>>> mementoes;

    private UserCaretaker() {
        this.mementoes = new HashMap<>();
    }

    // 单例方法
    public static UserCaretaker getInstance() {
        if (instance == null) {
            synchronized (UserCaretaker.class) {
                if (instance == null) {
                    instance = new UserCaretaker();
                }
            }
        }
        return instance;
    }

    // 添加备忘录
    public void saveMemento(String name, List<HashMap<String, String>> memento) {
        if (!mementoes.containsKey(name)) {
            mementoes.put(name, memento);
        }
    }

    // 取出某个备忘录
    public List<HashMap<String, String>> rollbackMemento(String name) {
        if (mementoes.containsKey(name)) {
            return mementoes.get(name);
        }
        return null;
    }


}
